package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark04_Oper_Transform {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换 - flatMap
        // 扁平化：将一个整体拆分成一个一个的个体来使用的方式
        val rdd = sc.makeRDD(
            List(
                List(1,2), List(3,4)
            )
        )
        val rdd1 = sc.makeRDD(
            List(1,2,3,4)
        )
        // 元素是List集合，表示一个整体
        // 希望获取的结果是集合中每一个元素，1，2，3，4
        // 函数类型中第一个参数类型list代表的是数据集中的元素类型
        // 函数类型中第二个参数类型list代表的是扁平化后的数据容器
        val rdd2 = rdd.flatMap(list=>list)

        rdd1.flatMap(
            num => {
                List(num)
            }
        )

        rdd2.collect().foreach(println)

        // 分词
        val rdd3 = sc.makeRDD(
            List(
                "Hell Spark",
                "Hello Hadoop"
            )
        )
        val rdd4: RDD[String] = rdd3.flatMap(
            str => {
                str.split(" ")
            }
        )

        rdd4.collect().foreach(println)



        sc.stop()

    }
}
